-- TestBench Template 

  LIBRARY ieee;
  USE ieee.std_logic_1164.ALL;
  USE ieee.numeric_std.ALL;

  ENTITY testbench IS
  END testbench;

  ARCHITECTURE behavior OF testbench IS 

  -- Component Declaration
          COMPONENT alu32bit
          port(a, b 						: IN std_logic_vector(31 downto 0);	-- a and b are busses
				operation 					: IN std_logic_vector(4 downto 0);
				CLK							: IN std_logic;
					z	 						: OUT std_logic;
					f 							: OUT std_logic_vector(31 downto 0));
          END COMPONENT;

          SIGNAL testA, testB, testF			: std_logic_vector (31 downto 0);
			 SIGNAL testOP								: std_logic_vector (4 downto 0);
			 SIGNAL testCLK, testZ					: std_logic;
          

  BEGIN

  -- Component Instantiation
          uut: <component name> PORT MAP(
                  <port1> => <signal1>,
                  <port3> => <signal2>
          );


  --  Test Bench Statements
	process
		begin
			TestA <= X"FFFFDDDD";
			TestB <= X"DDDDFFFF";
			wait for 50 ns;
			
			TestOp <= "00000";
			wait for 50 ns;
			TestOp <= "00001";
			wait for 50 ns;
			TestA <= X"0000DDDD";
			wait for 50 ns;
			TestOp <= "00010";
			TestA <= X"FFFFDDDD";
			wait for 50 ns;
			TestB <= X"FFFFDDDDD";
			wait for 50 ns;
			TestOp <= "00011";
			TestB <= X"DDDDFFFF";
			wait for 50 ns;
			TestOp <= "00100";
			wait for 50 ns;
			TestOp <= "00101";
			wait for 50 ns;
			TestOp <= "00110";
			wait for 50 ns;
			TestOp <= "00111";
			wait for 50 ns;
			TestOp <= "01000";
			wait for 50 ns;
			TestOp <= "01001";
			wait for 50 ns;
			TestOp <= "01010";
			wait for 50 ns;
			TestOp <= "01011";
			wait for 50 ns;
			TestOp <= "01100";
			wait for 50 ns;
			TestOp <= "01101";
			wait for 50 ns;
			TestOp <= "01110";
			wait for 50 ns;
			TestOp <= "01111";
			wait for 50 ns;
			TestOp <= "10000";
			wait for 50 ns;
			TestOp <= "10001";
			wait for 50 ns;
			TestOp <= "10010";
			wait for 50 ns;
			TestOp <= "10011";
			wait for 50 ns;
			wait;
	end process;
   process
		begin
			testCLK <= '0';
			wait for 25 ns;
			testCLK <= '1';
			wait for 25 ns;
	end process;
  END;